package com.whfc.wxmp.api.uni.service;

import com.whfc.common.result.PageData;
import com.whfc.entity.dto.OssPathDTO;
import com.whfc.uni.dto.CarInoutRecordDTO;
import com.whfc.uni.dto.CarLogDTO;
import com.whfc.uni.dto.CarStatisticalDTO;

import java.util.Date;

/**
 * @ClasssName MsCarInoutRecordService
 * @Description 车辆管理
 * @Author hw
 * @Date 2020/12/15 11:33
 * @Version 1.0
 */
public interface MpCarInoutRecordService {

    /**
     * 获取记录列表
     *
     * @param deptId       组织机构ID
     * @param time         日期
     * @param pageNum      页码
     * @param pageSize     每页数量
     * @return 记录列表
     */
    PageData<CarInoutRecordDTO> selectRecordList(Integer deptId, Date time, Integer pageNum, Integer pageSize);

    /**
     * 获取记录列表（月）
     *
     * @param deptId
     * @param date
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<CarInoutRecordDTO> selectMontRecordList(Integer deptId, Date date, Integer pageNum, Integer pageSize);

    /**
     * 获取记录列表（自定义）
     * @param deptId
     * @param startTime
     * @param endTime
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<CarInoutRecordDTO> selectRecordList(Integer deptId, Date startTime, Date endTime, Integer pageNum, Integer pageSize);

    /**
     * 车辆统计（天）
     *
     * @param deptId
     * @param time
     * @return
     */
    CarStatisticalDTO getDayStatistical(Integer deptId, Date time);

    /**
     * 车辆统计（月）
     *
     * @param deptId
     * @param date
     * @return
     */
    CarStatisticalDTO getMonthStatistical(Integer deptId, Date date);

    /**
     * 车辆统计（自定义）
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     */
    CarStatisticalDTO getMonthStatistical(Integer deptId, Date startTime, Date endTime);

    /**
     * 导出
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     */
    OssPathDTO export(Integer deptId, Date startTime, Date endTime);

    /**
     * 导出（日）
     * @param deptId
     * @param time
     * @return
     */
    OssPathDTO export(Integer deptId, Date time);

    /**
     * 导出（月）
     * @param deptId
     * @param date
     * @return
     */
    OssPathDTO montExport(Integer deptId, Date date);

    /**
     * 车辆日志
     * @param deptId
     * @param date
     * @return
     */
    CarLogDTO carLog(Integer deptId, Date date);
}
